NetWare Loadable Module
   HOME

TheInfoList



OR:

A NetWare Loadable Module (NLM) is a loadable kernel module (a
binary Binary may refer to: Science and technology Mathematics * Binary number, a representation of numbers using only two digits (0 and 1) * Binary function, a function that takes two arguments * Binary operation, a mathematical operation that ta ...
code module) that can be loaded into Novell's NetWare operating system. NLMs can implement hardware drivers, server functions (e.g. clustering), applications (e.g. GroupWise), system libraries or utilities. NLMs were supported beginning with the
Intel 80386 The Intel 386, originally released as 80386 and later renamed i386, is a 32-bit microprocessor introduced in 1985. The first versions had 275,000 transistorsNetWare version 3.x. Prior versions of NetWare had a monolithic
kernel Kernel may refer to: Computing * Kernel (operating system), the central component of most operating systems * Kernel (image processing), a matrix used for image convolution * Compute kernel, in GPGPU programming * Kernel method, in machine learn ...
, and significant hardware or functionality changes required re-linking the kernel from object modules. Due to stability issues with early third-party NLMs, they never became popular for server application programming, with few exceptions like
antivirus Antivirus software (abbreviated to AV software), also known as anti-malware, is a computer program used to prevent, detect, and remove malware. Antivirus software was originally developed to detect and remove computer viruses, hence the nam ...
programs, backup programs and certain
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
products.


Functionality

Upon loading, a NLM requests resources, such as memory and process threads, from the NetWare kernel. The NetWare kernel tracks such requests, and can identify memory and other resources assigned to a specific NLM. NLMs may auto-load other NLMs upon which they themselves depend. NLMs may register commands with the NetWare kernel, extending the command vocabulary available at the NetWare console prompt. When properly coded, NLMs can be re-entrant, allowing multiple instances of the same code to be loaded and run.


Programming issues

Initially, Novell published a development toolkit for NLM programming including kernel API documentation and a
C compiler This page is intended to list all current compilers, compiler generators, interpreters, translators, tool foundations, assemblers, automatable command line interfaces ( shells), etc. Ada Compilers ALGOL 60 compilers ALGOL 68 compilers cf. ...
(
Watcom Watcom International Corporation was a software company, which was founded in 1981 by Wes Graham and Ian McPhee. Founding staff (Fred Crigger, Jack Schueler and McPhee) were formerly members of Professor Graham's Computer Systems Group at the Uni ...
), but third-party support for the NLM executable function was very limited. In early NetWare versions (prior to v4.x), all processes were executed in the
kernel Kernel may refer to: Computing * Kernel (operating system), the central component of most operating systems * Kernel (image processing), a matrix used for image convolution * Compute kernel, in GPGPU programming * Kernel method, in machine learn ...
address space, without specific memory protection. It was therefore possible for bugs in NLMs to overwrite the kernel's or other NLM's address space and ultimately crash the server — in the mainframe-derived Novell terminology, this was known as an ABEND or
ABnormal END An abnormal end or abend is an abnormal termination of software, or a program crash. This usage derives from an error message from the IBM OS/360, IBM zOS operating systems. Usually capitalized, but may appear as "abend". Some common ABEND codes ...
. Moreover, NetWare used a non-preemptive, or
cooperative A cooperative (also known as co-operative, co-op, or coop) is "an autonomous association of persons united voluntarily to meet their common economic, social and cultural needs and aspirations through a jointly owned and democratically-contro ...
, multitasking model, meaning that an NLM was required to yield to the kernel regularly. An NLM executing an
infinite loop In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs ("pull the plug"). It may be intentional. Overview This differs from: * ...
, for example, could therefore not be stopped. In NetWare v4.x, Novell introduced a limited form of memory protection, which was extended to ''Protected Address Spaces'' in NetWare v5.x. Through these mechanisms, properly-coded NLMs can be loaded into their own address space, and mis-behaving NLMs can be prevented from compromising the kernel integrity.


Compilers

Official compilers that produce NLMs are: *
Watcom C/C++ compiler Watcom C/C++ (currently Open Watcom C/C++) is an integrated development environment (IDE) product from Watcom International Corporation for the C, C++, and Fortran programming languages. Watcom C/C++ was a commercial product until it was disco ...
/ OpenWatcom *
Metrowerks Metrowerks was a company that developed software development tools for various desktop, handheld, embedded, and gaming platforms. Its flagship product, CodeWarrior, comprised an IDE, compilers, linkers, debuggers, libraries, and related tools. I ...
Codewarrior CodeWarrior is an integrated development environment (IDE) published by NXP Semiconductors for editing, compiling, and debugging software for several microcontrollers and microprocessors (Freescale ColdFire, ColdFire+, Kinetis, Qorivva, PX, Frees ...
for NetWare * EPC C/C++ * Novell NLMLINK.EXE NLM development is also possible with GNU cc and binutils. More details are available in NetWare Loadable Module Programming HOWTO by Martin Hinner.


Client-side NLMs with NIOS

Announcing it in March 1995, Novell introduced a new 32-bit DOS/Windows NetWare client ( Client 32 based on ODI32/NIOS) in 1996, replacing the former 16-bit client based on ODI/VLM. Its NIOS component (
NetWare I/O Subsystem DOS Protected Mode Services (DPMS) is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode. Not being a DOS extender by itself, DPMS is a minimal set of e ...
) used techniques similar to DPMS to relocate and run NLMs in protected mode and
extended memory In DOS memory management, extended memory refers to memory above the first megabyte (220 bytes) of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems. D ...
in order to reduce the
conventional memory In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system ...
footprint of the client down to 2 to 5 KB.


See also

*
Virtual Loadable Module NetWare Lite and Personal NetWare are a series of discontinued peer-to-peer local area networks developed by Novell for DOS- and Windows-based personal computers aimed at personal users and small businesses in the 1990s. NetWare Lite In 1991, N ...
(VLM)


References


Further reading

* * {{cite web , title=Novell Developer Documentation: Netware Loadable Module , url=http://developer.novell.com/tech/nlm.html , access-date=2010-09-25 , url-status=dead , archive-url=https://web.archive.org/web/20091124201302/http://developer.novell.com/tech/nlm.html , archive-date=2009-11-24 Executable file formats Novell NetWare